public class Test {
    public static void main(String[] args) {
        int i = 2;
        for (i = 2; i <=100 ; i++) {
            int j = 2;
            for (j = 2; j <= i/2 ; j++) {           //两个因数先乘，其中有一个因数一定小于积的一半（缩小计算范围）
                if(i % j ==0){
                    break;
                }
            }
            if(j > i/2){
                System.out.print(i+" ");
            }
        }
    }

    public static void main4(String[] args) {
        int i = 2;
        for (i = 2; i <= 100; i++) {
            int j = 2;
            for (j = 2; j <=Math.sqrt(i) ; j++) {       //定义一个数学符号开根号，这两个因数，至少有一个因数不会大于根号i
                if(i % j == 0){
                    break;
                }
            }
            if(j > Math.sqrt(i)){
                System.out.print(i+" ");
            }
        }
    }

    public static void main3(String[] args) {
        int i = 2;
        for (i = 2; i <=100 ; i++) {
            int j = 2;
            for (j = 2; j <=i-1 ; j++) {
                if(i % j ==0){
                    break;
                }
            }
            if(j > i-1){        //这个判断是对于两种情况的考虑，1、是break跳出循环（不是素数）
                                // 2、是如果除下来都没有余数为0的，而且假设i为7，i-1为6，循环下来j=7，未进入循环，则它是素数
                System.out.print(i+" ");
            }
        }
    }


    public static void main2(String[] args) {
        int i = 2;
        for (i = 2; i <=100 ; i++) {
            int j = 2;
            int flag = -1;
            for (j = 2; j <=i-1 ; j++) {
                if(i % j ==0){
                    flag = 1;       //不是素数
                    break;
                }
            }
            if(flag == -1){         //是素数
                System.out.print(i+" ");
            }
        }
    }

    public static void main1(String[] args) {
        int i = 2;                              //从2开始，因为素数的定义是大于1的数，且只能被1和它本身整除
        for ( i = 2; i <= 100; i++) {           //在外面定义int i= 2；for循环里面不可重新再写int i = 2；会报错显示重复定义
            int j = 2;
            boolean a = false;                 //定义false为素数
            for (j = 2; j <= i-1 ; j++) {
                if(i % j == 0){
                    a = true;                 //true不是素数
                    break;
                }
            }
            if(!a ){        //if是条件判断语句，结果是真就执行。
                System.out.print(i+" ");
            }
        }
    }
}